﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ext.Net;
using Ent.Inscripcion.Core.Core;
using Ent.Inscripcion.Core.Administracion;

namespace Ent.Inscripcion.Presentacion.Administracion
{
    public partial class Requisitos : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
        }

        protected void btnBuscar_Click(object sender, DirectEventArgs e)
        {
            try
            {
                bool tutoria, examen;
                bool.TryParse(e.ExtraParams["Tutoria"], out tutoria);
                bool.TryParse(e.ExtraParams["Examen"], out examen);
                var tipo = (tutoria && examen) ? "Ambos" : tutoria ? "Tutoria" : examen? "Examen":"";
                var criterioRequisito = RequisitoCriterio.NewRequisitoCriterio();
                criterioRequisito.Nombre = e.ExtraParams["Nombre"];
                criterioRequisito.Tipo = tipo;
                CargarDatos(criterioRequisito);
                e.Success = true;
            }
            catch (Exception ex)
            {
                e.Success = false;
                Util.RegistarLog(ex);
            }
        }

        private void CargarDatos(RequisitoCriterio criterio)
        {
            stoRequisitos.DataSource = RequisitoLista.GetRequisitoLista(criterio);
            stoRequisitos.DataBind();
        }
        /// <summary>
        /// Permite manejar la accion realizada sobre un Requisito
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ManejarAccion(object sender, DirectEventArgs e)
        {
            try
            {
                Guid idRequisito = Guid.Parse(e.ExtraParams["Id"]);
                string opcion = e.ExtraParams["Comando"];
                var requisito = Requisito.GetRequisito(idRequisito);

                txtNombre.SetValue(requisito.Nombre);
                cbTipo.SetValue(requisito.Tipo);
                switch (opcion)
                {
                    case "Eliminar":
                        hidAccionRequisito.Text = "Eliminar";
                        btnEliminar.Show();
                        btnGuardar.Hide();
                        break;
                    case "Editar":
                        hidAccionRequisito.Text = "Editar";
                        btnEliminar.Hide();
                        btnGuardar.Show();
                        break;
                    default:
                        break;
                }
                hidIdRequisito.Text = idRequisito.ToString();
                winRequisitos.Show();
                e.Success = true;
            }
            catch (Exception ex)
            {
                e.Success = false;
                Util.RegistarLog(ex);
            }
        }

        public void btnEliminar_Click(object sender, DirectEventArgs e)
        {
            try
            {
                string id = e.ExtraParams["Id"];
                Guid idRequisito = Guid.Parse(id);
                var requisito = Requisito.GetRequisito(idRequisito);
                requisito.Delete();
                requisito.Save();
                CargarDatos(RequisitoCriterio.NewRequisitoCriterio());
                e.Success = true;
            }
            catch (Exception ex)
            {
                e.Success = false;
                Util.RegistarLog(ex);
            }

        }
        protected void btnGuardar_Click(object sender, DirectEventArgs e)
        {
            try
            {
                string accion = e.ExtraParams["Accion"];
                string id = e.ExtraParams["Id"];
                var tipo = e.ExtraParams["Tipo"];
                var nombre = e.ExtraParams["Nombre"];
                Requisito requisito = null;
                if (accion == "Editar")
                    requisito = Requisito.GetRequisito(new Guid(id));
                else
                    requisito = Requisito.NewRequisito();
                requisito.Tipo = tipo;
                requisito.Nombre = nombre;
                requisito.Save();
                CargarDatos(RequisitoCriterio.NewRequisitoCriterio());
                e.Success = true;
            }
            catch (Exception ex)
            {
                e.Success = false;
                Util.RegistarLog(ex);
            }
        }
    }
}